<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

class Mail {

    private function _config($smtp = false) {

        include_once 'PHPMailer/PHPMailerAutoload.php';

        mb_language("japanese");           //言語(日本語)
        mb_internal_encoding("UTF-8");
        //Create a new PHPMailer instance
        $mail = new PHPMailer();
        //Tell PHPMailer to use SMTP
        $mail->isSMTP();
        $mail->setLanguage('ja');
        //Enable SMTP debugging
        // 0 = off (for production use)
        // 1 = client messages
        // 2 = client and server messages
        $mail->SMTPDebug = 0;
        //Ask for HTML-friendly debug output
        $mail->Debugoutput = 'html';
        //Set the hostname of the mail server
        $mail->Host = "gs824.ggsv.jp";
        //Set the SMTP port number - likely to be 25, 465 or 587
        $mail->Port = 25;
        //Whether to use SMTP authentication
        $mail->SMTPAuth = $smtp;
        //Username to use for SMTP authentication
        $mail->Username = "bm-info@am-bition.jp";
        //Password to use for SMTP authentication
        $mail->Password = "ambad001";

        $mail->CharSet = "utf-8";    //文字コード設定
        $mail->Encoding = "7bit";
        $mail->IsHTML(true);

        //send the message, check for errors
        return $mail;
    }

    /**
     * 
     * @global type $database
     * @global type $user
     * @param type $from
     * @param type $to
     * @param type $content_code
     * @param type $transaction_id
     * @return boolean
     */
    public function sendMail($content_code = null, $transaction_id = 0, $user_id = 0) {
        if (empty($content_code) && empty($transaction_id)) {
            return "No input";
        }
        global $database, $user;
//        $emails = $this->_getAmbitionMails();
        $amb1 = 'pm-info@am-bition.jp';//$emails['mail1'];
        $amb2 = 'bm-info@am-bition.jp';//$emails['mail2'];
        $user_mail = $user->user_info['user_email'];

        $transaction_class = new Transaction();
        $user_class = new HOMEUser();

        $content = $database->database_fetch_assoc($database->database_query(" SELECT * FROM mail_content WHERE content_code = '$content_code' LIMIT 1"));
        $transaction = $transaction_class->getTransactions($transaction_id);
        $contract = $transaction_class->getContract($transaction['contract_code']);
        $key = (array) $user_class->getAccountById($transaction['key_partner_id']);
        $repair = (array) $user_class->getAccountById($transaction['room_partner_id']);

        if (empty($content) && empty($transaction) && empty($contract)) {
            return "No Data";
        }
        //init Subject
        $subject = '';
        if ($content['content_code'] == 'requestchangekey') { //tên tòa nhà, số phòng, phương pháp xem nhà, địa chỉ, ngày dự định thay chìa khóa
            $subject = "{$contract['house_name']} , {$contract['room_number']} , {$transaction['way_to_see_room']} , {$contract['house_address']} {$contract['house_address_2']} , {$transaction['appointment_change_key_date']}";
        } elseif ($content['content_code'] == 'reportfee') { //mã số quản lý
            $subject = $transaction['contract_code'];
        } elseif ($content['content_code'] == 'deadlinepayment7' || $content['content_code'] == 'deadlinepayment2') { // mã số quản lý, ngày thanh toán
            $payment_date = @date('Y-m-d',  strtotime("{$transaction['contract_cancel_date']} + {$transaction['payment_day_number']} days"));
            $subject = "{$transaction['contract_code']} , {$payment_date}";
        } else {//tên tòa nhà, số phòng
            $subject = "{$contract['house_name']} , {$contract['room_number']}";
        }

        $mail = $this->_config(true);
        //Set who the message is to be sent from
        $mail->setFrom($mail->Username);
        if ($content['content_code'] == 'datecontractcancel') {//step 1 khi có thay đổi, gửi mail tới amb và đối tác
            $mail->addAddress($amb1);
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'dateroomcancel') {//step 2 khi có thay đổi, gửi mail tới amb và đối tác
            $mail->addAddress($amb1);
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'datetimecancel') {//step 3 khi có thay đổi, gửi mail tới amb và đối tác
            $mail->addAddress($amb1);
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'requestroomrepair') {//step 4 khi dc nhập hay thay đổi, gửi mail tới đối tác
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'donetoseeroom') {//step 5 khi có thay đổi, gửi mail tới amb
            $mail->addAddress($amb1);
        } elseif ($content['content_code'] == 'reportfee') {//step 6 khi dc nhập, gửi mail tới amb
            $mail->addAddress($amb1);
        } elseif ($content['content_code'] == 'acceptfee') {//step 7 khi dc nhập, gửi mail tới đối tác
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'doneroomrepair') {//step 8 khi dc nhập, gửi mail tới amb va đối tác -- khi quá 14 ngày từ cột trc mà cột này ko dc nhập, gửi mail nhắc nhở tới amb và đối tác
            $mail->addAddress($amb1);
            $mail->addAddress($repair['user_email']);
        } elseif ($content['content_code'] == 'repairedroomreport') {//step 9 khi dc nhập, gửi mail tới đối tác
            $mail->addAddress($amb1);
            $mail->addAddress($key['user_email']);
        } elseif ($content['content_code'] == 'requestchangekey') {//step 10 khi dc nhập, gửi mail tới  amb
            $mail->addAddress($key['user_email']);
        } elseif ($content['content_code'] == 'assignedkey') {//step 11 khi dc nhập, gửi mail tới amb
            $mail->addAddress($amb1);
        } elseif ($content['content_code'] == 'recoverykey') {//step 12 ngày yêu cầu thanh toán và ô thanh toán mà trống thì sẽ gửi mail cho amb trong kỳ hạn trc 1 tuần và trc 2 ngày
            $mail->addAddress($amb1);
        } elseif ($content['content_code'] == 'deadlinepayment7') {//step 12 ngày yêu cầu thanh toán và ô thanh toán mà trống thì sẽ gửi mail cho amb trong kỳ hạn trc 1 tuần và trc 2 ngày
            $mail->addAddress($amb2);
        } elseif ($content['content_code'] == 'deadlinepayment2') {//step 12 ngày yêu cầu thanh toán và ô thanh toán mà trống thì sẽ gửi mail cho amb trong kỳ hạn trc 1 tuần và trc 2 ngày
            $mail->addAddress($amb2);
        } elseif ($content['content_code'] == 'remindfuniture14') {//step 12 ngày yêu cầu thanh toán và ô thanh toán mà trống thì sẽ gửi mail cho amb trong kỳ hạn trc 1 tuần và trc 2 ngày
            $mail->addAddress($amb1);
            $mail->addAddress($repair['user_email']);
        } elseif($content['content_code'] == 'oldtrader'){
            $oldtrader = (array) $user_class->getAccountById($user_id);
            if(!empty($oldtrader)){
                $mail->addAddress($amb1);
                $mail->addAddress($oldtrader['user_email']);
            }
        }elseif ($content['content_code'] == 'canceldate') {
            $mail->addAddress('pm-info@am-bition.jp');
        }
        
        $mail->Subject = mb_encode_mimeheader($subject);
        //Read an HTML message body from an external file, convert referenced images to embedded,
        if ($content['content_code'] == 'canceldate') {
            $contenttmp = "(解約日)".@date('Y\年m\月d\日',  strtotime("{$transaction['contract_cancel_date']}"))."・(退去日)".@date('Y\年m\月d\日',  strtotime("{$transaction['contract_cancel_date']}"));
            //convert HTML into a basic plain-text alternative body
            $mail->msgHTML($contenttmp, dirname(__FILE__));
            //Replace the plain text body with one created manually
            $mail->AltBody = $contenttmp;
        }else{
            //convert HTML into a basic plain-text alternative body
            $mail->msgHTML($content['content_email'], dirname(__FILE__));
            //Replace the plain text body with one created manually
            $mail->AltBody = $content['content_email'];
        }
        //Log
        $recipients = implode(',',array_keys($mail->getAllRecipientAddresses()));
        $date = date('Y-m-d H:i:s');
        
        $database->database_query(" INSERT INTO mail_log (
                                contract_code,
                                sender,
                                recipients,
                                content_code,
                                transaction_id,
                                subject,
                                body,
                                creation_time
                              ) VALUES (
                                '{$transaction['contract_code']}',
                                '{$mail->Username}',
                                '{$recipients}',
                                '{$content['content_code']}',
                                '{$transaction['transaction_id']}',
                                '{$subject}',
                                '{$content['content_email']}',
                                '{$date}'
                              )
                            ");
        //Attach an image file
//        $mail->addAttachment('images/phpmailer_mini.png');
        if (!$mail->send()) {
            return "Mailer Error: " . $mail->ErrorInfo;
        } else {
            return true;
        }
    }

    private function _getAmbitionMails() {
        global $database;
        $row = $database->database_fetch_assoc($database->database_query(" SELECT  * FROM user WHERE type_id = 1 LIMIT 1 "));
        return array(
            'mail1' => @$row['user_email'],
            'mail2' => '',
        );
    }

}
